﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyTKB_TienDoGD
{
    public class XuLyTienTrinh
    {
        /// <summary>
        /// Hàm xử lý hiển thị form tiến hình
        /// </summary>
        static void HienThiXuLy()
        {
            frmXuLy xl = new frmXuLy();
            xl.ShowDialog();
        }

        /// <summary>
        /// Khai báo thuộc tính TienTrinh có kiểu dữ liệu Thread
        /// </summary>
        static Thread TienTrinh;

        /// <summary>
        /// phương thức xử lý tiến trình
        /// </summary>
        public static void HienThiTienTrinh()
        {
            try
            {
                TienTrinh = new Thread(HienThiXuLy);    //khởi tạo tiến trình
                TienTrinh.Start();  // Bắt đầu tiến hình
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        /// <summary>
        /// phương thức hiển thị tiến trình
        /// có tham số đầu vào là Form
        /// </summary>
        /// <param name="frm"></param>
        public static void HienThiTienTrinh(Form frm)
        {
            try
            {
                TienTrinh = new Thread(HienThiXuLy);
                TienTrinh.Start();
                frm.Visible = false;
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        /// <summary>
        /// phương thức hiển thị tiến hình
        /// có tham số đầu vào là Control
        /// </summary>
        /// <param name="ct"></param>
        public static void HienThiTienTrinh(Control ct)
        {
            try
            {
                TienTrinh = new Thread(HienThiXuLy);
                TienTrinh.Start();
                ct.Visible = false;
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        /// <summary>
        /// phương thức ẩn tiến trình
        /// </summary>
        public static void AnTienTrinh()
        {
            TienTrinh.Abort(); // kết thúc tiến trình
        }

        /// <summary>
        /// phương thức ẩn tiến trình
        /// có tham số đầu vào Form
        /// </summary>
        /// <param name="frm"></param>
        public static void AnTienTrinh(Form frm)
        {
            try
            {
                frm.Visible = true;
                TienTrinh.Abort();
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        /// <summary>
        /// phương thức ẩn tiến trình 
        /// có tham só đầu vào Control
        /// </summary>
        /// <param name="ct"></param>
        public static void AnTienTrinh(Control ct)
        {
            try
            {
                ct.Visible = true;
                TienTrinh.Abort();
            }
            catch (Exception)
            {

                throw;
            }
        }



    }
}
